Пересмотр объектно-ориентированного программирования в Rust подразумевает переход от жестких иерархий классов к модели, сосредоточенной на разделении данных и поведения. В то время как традиционные языки системного программирования полагаются на сложные деревья объектов, в Rust достигаются цели объектно-ориентального проектирования — инкапсуляция и полиморфизм — с помощью особенностей (traits) и модулей, чтобы приоритизировать безопасность памяти без накладных расходов во время выполнения.
1. Вызов иерархии
Rust явно избегает наследования реализации, чтобы предотвратить проблему хрупкого базового класса проблему. Вместо этого он предпочитает композицию и особенности (Traits) для определения общего поведения между разными типами. Здесь «объект» — это комбинация данных (структуры) и процедур (блоки реализации), проверяемая на этапе компиляции.
2. Параллелизм и состояние как тип
Rust обрабатывает параллелизм в первую очередь через стандартную библиотеку (Send/Sync особенности), а не через ядро языка. Чтобы максимизировать безопасность, алгоритм «Состояние как тип» кодирует различные состояния в разные типы. Переходы возвращают новые экземпляры, перенося логику из операций во время выполнения if операторов в требования на этапе компиляции.